Object-relational mapping tools (ORMs) have become a fixture in application programming over relational databases. They provide an application developer the ability to develop against a conceptual model which is generally an entity-relationship model with inheritance. The conceptual model is coupled to a mapping that describes the relationship between the model and a physical database schema. The ORM uses this mapping to translate queries and updates against the model into semantically-equivalent ones of the relational database.
When an application changes, however, the conceptual model for the application may need to change as well. To reflect these changes, an application developer may modify the physical database schema and create a new mapping between the conceptual model and the physical database schema. This process may be difficult and cumbersome.